﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Windows.Controls;
using BaocaoNPC.common;
using Component;
using CMISLibrary;
//using busBaoCao;
using CMISLibrary.Libraries;
using System.IO;
using Microsoft.VisualBasic;
using BaocaoNPC.Usercontrols.reports;
using bus_TienichNPC;

namespace BaocaoNPC.Usercontrols
{
    /// <summary>
    /// Interaction logic for BAOCAOTONGHOPCONGTY.xaml
    /// </summary>
    public partial class BAOCAOTONGHOPCONGTY : UserControl
    {
        #region Variables
        public String strMadviqly = NPCUS_DanhMuc.Pglobal.strMa_dviqly != "" && NPCUS_DanhMuc.Pglobal.strMa_dviqly != null ? NPCUS_DanhMuc.Pglobal.strMa_dviqly : "PA";
        public string strUsername = NPCUS_DanhMuc.Pglobal.strTen_dangnhap != "" && NPCUS_DanhMuc.Pglobal.strTen_dangnhap != null ? NPCUS_DanhMuc.Pglobal.strTen_dangnhap : "NPC_ATM";
        public String strTen_dviqly = NPCUS_DanhMuc.Pglobal.strTen_dviqly != "" && NPCUS_DanhMuc.Pglobal.strTen_dviqly != null ? NPCUS_DanhMuc.Pglobal.strTen_dviqly : "cty..";
        public String strTen_dviqly_CT = NPCUS_DanhMuc.Pglobal.strTen_dviqly_CT != "" && NPCUS_DanhMuc.Pglobal.strTen_dviqly_CT != null ? NPCUS_DanhMuc.Pglobal.strTen_dviqly_CT : "cap tren";
        public Int32 i16ThangHT = 0;
        public Int32 i16NamHT = 0;
        DataSet ds_INBAOCAO = new BCNPCEntities.EXCEL.ds_Inbaocao();
        string ma_dv = "";
        DataSet dsD_DVI_QLY = new DataSet();
        DataSet ds_TNV = new DataSet();
        DataSet dsResult = new DataSet();
       // cls_ImportExcel_bus cls = new cls_ImportExcel_bus();
        string maloi = "";
        string DSACH = "BIENBAN";
        string NGAYTHANG = "";
        #endregion
        public BAOCAOTONGHOPCONGTY()
        {
            InitializeComponent();
            Component.TabIndexManager.RegisterTabManagerWithSelectAll(this);
            GET_THANGNAM_HT();
            GetD_DVI_QLY();
        }
        private void GET_THANGNAM_HT()
        {
            try
            {
                DataSet dsthanglviec = new DataSet();
                dsthanglviec = GlobalServices.Service_NPCUS.get_thang_lviec();
                if (dsthanglviec != null && dsthanglviec.Tables.Count > 0)
                {
                    foreach (DataRow dr in dsthanglviec.Tables[0].Rows)
                        if (dr["PHAN_HE"].ToString() == "CN" && dr["MA_DVIQLY"].ToString() == strMadviqly)
                        {
                            i16ThangHT = Convert.ToInt32(dr["THANG"]);
                            i16NamHT = Convert.ToInt32(dr["NAM"]);
                            dtpThangHTtim.Text = i16ThangHT.ToString() + "/" + i16NamHT.ToString();
                            //dtpThangNam.Text = i16ThangHT.ToString() + "/" + i16NamHT.ToString();
                            dtptungay.Text = "1" +"/"+ i16ThangHT.ToString() + "/" + i16NamHT.ToString();
                            dtpdenngay.SelectedDate = System.DateTime.Now.Date;
                        }
                }
            }
            catch
            {
                i16ThangHT = Convert.ToInt16(DateTime.Now.Month);
                i16NamHT = Convert.ToInt16(DateTime.Now.Year);
            }
        }
        private void GetD_DVI_QLY()
        {
            try
            {
                dsD_DVI_QLY = new DataSet();
                dsD_DVI_QLY = GlobalServices.Service_NPCUS.select_D_DVI_QLY_ALL(strMadviqly);
                if (dsD_DVI_QLY == null)
                {
                    System.Windows.MessageBox.Show("Không lấy được danh mục đơn vị quản lý.");
                }
                else
                {
                    DataView dv = dsD_DVI_QLY.Tables["D_DVI_QLY"].DefaultView;
                    cboDonVi.ItemsSource = dv;
                    cboDonVi.DisplayMemberPath = "TEN_DVIQLY";
                    cboDonVi.SelectedValuePath = "MA_DVIQLY";
                    cboDonVi.SelectedIndex = 0;
                    if (strMadviqly.Length == 6)
                    {
                        cboDonVi.IsReadOnly = true;
                        cboDonVi.IsEnabled = false;
                        cmdTongHop.IsEnabled = true;
                        //checkBox1.IsChecked = true;
                        //checkBox1.IsEnabled = false;
                    }
                    else
                    { 
                        cboDonVi.IsReadOnly = false;
                        cboDonVi.IsEnabled = true;
                        cmdTongHop.IsEnabled = false;
                        //checkBox1.IsChecked = false;
                        //checkBox1.IsEnabled = true;
                    }
                }
                
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message.ToString());
            }
        }

        private void btnIn_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                string thangnam = "Tháng " + i16ThangHT.ToString() + " Năm " + i16NamHT.ToString();
                string ngaythang = "Từ ngày" + dtptungay.Text.ToString() + " đến ngày " + dtpdenngay.Text.ToString();
                switch (DSACH)
                {
                    case "BIENBAN": //Hóa đơn giao thu của TNV
                        if (ds_INBAOCAO == null || ds_INBAOCAO.Tables.Count == 0)
                        { TootsNPC.ShowMessage.SetStatus("ERROR",this,btnIn,"lblstatus","Không có dữ liệu theo điều kiện chọn"); return; }
                        if (ds_INBAOCAO.Tables["BAOCAO"].Rows.Count > 0)
                        {
                            if (ma_dv.Length == 6) // báo cáo điện lực
                            {
                                if (checkBox1.IsChecked == true) // báo cáo chi tiết
                                {
                                    BaoCaoToanDienLuc_chitiet rpt = new BaoCaoToanDienLuc_chitiet();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                    rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    rpt.SetParameterValue("Baocao", "Báo cáo chi tiết số thu của Điện lực theo thu ngân viên".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                                else
                                {
                                    BaoCaoToanDienLuc_DL rpt = new BaoCaoToanDienLuc_DL();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                    rpt.SetParameterValue("ma_dviqlycaptren", strMadviqly);
                                    rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    rpt.SetParameterValue("Baocao", "Báo cáo số thu của Điện lực".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                            }
                            else
                            {
                                if (checkBox1.IsChecked == true) // báo cáo chi tiết
                                {
                                    BaoCaoToanDienLuc_chitiet rpt = new BaoCaoToanDienLuc_chitiet();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                    rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    rpt.SetParameterValue("Baocao", "Báo cáo chi tiết số thu của Điện lực theo thu ngân viên".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                                else
                                {
                                    BaoCaoToanDienLuc rpt = new BaoCaoToanDienLuc();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                    rpt.SetParameterValue("ma_dviqlycaptren", strMadviqly);
                                    rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    rpt.SetParameterValue("Baocao", "Báo cáo số thu của công ty Điện lực".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                            }
                        }
                        else
                        { TootsNPC.ShowMessage.SetStatus("ERROR", this, btnIn, "lblstatus", "Không có dữ liệu theo điều kiện chọn"); }
                        break;
                    case "ATM": // Hóa đơn thu hộ
                        if (ds_INBAOCAO == null || ds_INBAOCAO.Tables.Count == 0)
                        { TootsNPC.ShowMessage.SetStatus("ERROR", this, btnIn, "lblstatus", "Không có dữ liệu theo điều kiện chọn"); return; }
                        if (ds_INBAOCAO.Tables["BAOCAO"].Rows.Count > 0)
                        {
                            if (ma_dv.Length == 6)
                            {
                                if (checkBox1.IsChecked == true)
                                {
                                    BaoCaoToanDienLuc_ATM_chitiet rpt = new BaoCaoToanDienLuc_ATM_chitiet();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                    rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    rpt.SetParameterValue("Baocao", "Báo cáo chi tiết số thu của ATM".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                                else
                                {
                                    BaoCaoToanDienLuc_ATM_DL rpt = new BaoCaoToanDienLuc_ATM_DL();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                    //rpt.SetParameterValue("ma_dviqlycaptren", strMadviqly);
                                    rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    rpt.SetParameterValue("Baocao", "Báo cáo số thu của ATM".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                            }
                            else
                            {
                                if (checkBox1.IsChecked == true)
                                {
                                    BaoCaoToanDienLuc_ATM_chitiet rpt = new BaoCaoToanDienLuc_ATM_chitiet();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                    rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    rpt.SetParameterValue("Baocao", "Báo cáo chi tiết số thu của ATM".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                                else
                                {
                                    BaoCaoToanDienLuc_ATM rpt = new BaoCaoToanDienLuc_ATM();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                    rpt.SetParameterValue("ma_dviqlycaptren", strMadviqly);
                                    rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    rpt.SetParameterValue("Baocao", "Báo cáo số thu của ATM".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                            }
                        }
                        else
                        { TootsNPC.ShowMessage.SetStatus("ERROR", this, btnIn, "lblstatus", "Không có dữ liệu theo điều kiện chọn"); }
                        break;
                    case "TON": //Hóa đơn tồn
                        if (ds_INBAOCAO == null || ds_INBAOCAO.Tables.Count == 0)
                        { TootsNPC.ShowMessage.SetStatus("ERROR", this, btnIn, "lblstatus", "Không có dữ liệu theo điều kiện chọn"); return; }
                        if (ds_INBAOCAO.Tables["BAOCAO"].Rows.Count > 0)
                        {
                            if (ma_dv.Length == 6)
                            {
                                if (checkBox1.IsChecked == true)
                                {
                                    BaoCaoToanDienLuc_TON_chitiet rpt = new BaoCaoToanDienLuc_TON_chitiet();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                    //rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    rpt.SetParameterValue("Baocao", "Báo cáo Chi tiết số tồn của Điện lực theo TNV".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                                else
                                {
                                    BaoCaoToanDienLuc_TON_DL rpt = new BaoCaoToanDienLuc_TON_DL();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                   // rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    //rpt.SetParameterValue("ma_dviqlycaptren", strMadviqly);
                                    rpt.SetParameterValue("Baocao", "Báo cáo số tồn của Điện lực".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                            }
                            else
                            {
                                if (checkBox1.IsChecked == true)
                                {
                                    BaoCaoToanDienLuc_TON_chitiet rpt = new BaoCaoToanDienLuc_TON_chitiet();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                    //rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    rpt.SetParameterValue("Baocao", "Báo cáo Chi tiết số tồn của Điện lực theo TNV".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                                else
                                {
                                    BaoCaoToanDienLuc_TON rpt = new BaoCaoToanDienLuc_TON();
                                    rpt.SetDataSource(ds_INBAOCAO.Tables["BAOCAO"]);
                                    rpt.SetParameterValue("DienLucCapTren", strTen_dviqly_CT);
                                    rpt.SetParameterValue("DienLucHuyen", strTen_dviqly);
                                    rpt.SetParameterValue("ngaythangnam", thangnam);
                                    //rpt.SetParameterValue("tungaydenngay", ngaythang);
                                    rpt.SetParameterValue("ma_dviqlycaptren", strMadviqly);
                                    rpt.SetParameterValue("Baocao", "Báo cáo số tồn của Điện lực".ToUpper());
                                    //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                                    UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                                }
                            }
                        }
                        else
                        { TootsNPC.ShowMessage.SetStatus("ERROR", this, btnIn, "lblstatus", "Không có dữ liệu theo điều kiện chọn"); }
                        break;
                }
            }
            catch
            { }

        }
        private void RadDsachTheoBB_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                get_DS();
                TootsNPC.NPCTreeView.UnCheckTreeView(trvBBAN);
            }
            catch
            { }
        }

        private void RadDsachThuHo_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                get_DS();
                TootsNPC.NPCTreeView.UnCheckTreeView(trvBBAN);
            }
            catch
            { }
        }

        private void RadDsachKhTonCuoithang_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                get_DS();
                TootsNPC.NPCTreeView.UnCheckTreeView(trvBBAN);
            }
            catch
            { }
        }
        private void get_DS()
        {
            ds_INBAOCAO.Tables["BAOCAO"].Rows.Clear();
            if (RadDsachTheoBB.IsChecked == true)
            {
                DSACH = "BIENBAN";
            }
            if (RadDsachThuHo.IsChecked == true)
            {
                DSACH = "ATM";
            }
            if (RadDsachKhTonCuoithang.IsChecked == true)
            {
                DSACH = "TON";
                //dtpThangNam.IsEnabled = false;
            }
        }
       
        private void cboDonVi_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {
                ma_dv = cboDonVi.SelectedValue.ToString();
                ds_TNV = new DataSet();
                //ds_TNV = cls.select_ThuNganVien_baocao(ma_dv);
                ds_TNV = GlobalServices.Service_NPCUS.select_ThuNganVien_baocao(ma_dv);
                ds_INBAOCAO.Tables["BAOCAO"].Rows.Clear();
                if (ds_TNV == null)
                {
                    TootsNPC.ShowMessage.SetStatus("ERROR", this, cboDonVi, "lblstatus", "Không có dữ liệu thu ngân viên!");
                    trvBBAN.Items.Clear();
                    RadDsachKhTonCuoithang.IsEnabled = false;
                    RadDsachTheoBB.IsEnabled = false;
                    RadDsachThuHo.IsEnabled = false;
                    return;
                }
                else 
                {
                    if (ds_TNV.Tables[0].Rows.Count == 0)
                    {
                        TootsNPC.ShowMessage.SetStatus("ERROR", this, cboDonVi, "lblstatus", "Không có dữ liệu thu ngân viên!");
                        trvBBAN.Items.Clear();
                        RadDsachKhTonCuoithang.IsEnabled = false;
                        RadDsachTheoBB.IsEnabled = false;
                        RadDsachThuHo.IsEnabled = false;
                        return;
                    }
                    else
                    {
                        RadDsachKhTonCuoithang.IsEnabled = true;
                        RadDsachTheoBB.IsEnabled = true;
                        RadDsachThuHo.IsEnabled = true;
                    }
                }
                if (ma_dv.Length == 6)
                {
                    fill_dulieu_DL(ds_TNV);
                    cmdTongHop.IsEnabled = true;
                }
                else
                {
                    fill_dulieu_CTy(ds_TNV);
                    cmdTongHop.IsEnabled = false;
                    
                }
            }
            catch { }
        }
        private void fill_dulieu_CTy(DataSet ds)// hàm này đưa dữ liệu từ đầu vào tree();
        {
            try
            {
                if (ds.Tables.Count == 0) return;
                TreeViewItem superNode = new TreeViewItem();
                TreeViewItem _node = new TreeViewItem();
                TreeViewItem _childnode = new TreeViewItem();
                CheckBox chkNode = new CheckBox();
                CheckBox chkChildNode = new CheckBox();
                CheckBox chkSuperNode = new CheckBox();
                DataSet dsdv = dsD_DVI_QLY.Copy();
                // filter_treeDataSet();
                this.trvBBAN.Items.Clear(); // xoa tree trước khi đỗ dữ liệu mới
                DataView dv = new DataView(ds.Tables[0]);
                dv.Sort = "MA_DVIQLY,MA_TNGAN";
                if (dv.Count == 0) // không có dữ liệu không đưa ra tree
                {

                    superNode.Header = "Không có dữ liệu biên bản";
                    superNode.Tag = "Không có dữ liệu biên bản@";
                    trvBBAN.Items.Add(superNode);
                    return;
                }
                chkSuperNode = new CheckBox();
                dsdv.Tables[0].DefaultView.RowFilter = "MA_DVIQLY ='" + strMadviqly + "'";
                chkSuperNode.Content = strMadviqly + "_*_" + dsdv.Tables[0].DefaultView[0]["TEN_DVIQLY"].ToString();
                chkSuperNode.Tag = "@N@NUTGOC";
                chkSuperNode.ToolTip = strMadviqly;
                chkSuperNode.IsChecked = false;
                chkSuperNode.Click += new RoutedEventHandler(this.CheckBox_Click);
                superNode = new TreeViewItem();
                superNode.Header = chkSuperNode;
                superNode.IsExpanded = true;
                //superNode.IsSelected = true;
                trvBBAN.Items.Add(superNode);
                string strnutcha = "";
                string strnutcon = "";
                string str_ma_dviqly = "";
                string str_ma_tngan = "";
                string ma_tngan = "";
                foreach (DataRowView dr in dv)
                {
                    str_ma_dviqly = dr["MA_DVIQLY"].ToString();
                    str_ma_tngan = dr["SEARCH"].ToString();
                    ma_tngan = dr["MA_TNGAN"].ToString();
                    #region "parentnode"
                    if (str_ma_dviqly != strnutcha)
                    {
                        chkNode = new CheckBox();
                        dsdv.Tables[0].DefaultView.RowFilter = "MA_DVIQLY ='" + str_ma_dviqly + "'";
                        chkNode.Content = str_ma_dviqly + " _*_ " + dsdv.Tables[0].DefaultView[0]["TEN_DVIQLY"].ToString();
                        chkNode.Tag = str_ma_dviqly + "@" + chkSuperNode.ToolTip.ToString() + "@NUTCHA";
                        chkNode.ToolTip = str_ma_dviqly;
                        chkNode.IsChecked = false;
                        chkNode.Click += new RoutedEventHandler(this.CheckBox_Click);
                        _node = new TreeViewItem();
                        _node.Header = chkNode;
                        _node.IsExpanded = true;
                        superNode.Items.Add(_node);
                        strnutcha = str_ma_dviqly;
                    }
                    # endregion
                    #region childNode
                    if (str_ma_tngan != strnutcon)
                    {
                        //DataRow[] row1 = dsResultTree.Tables["table1"].Select("MA_DVI_QLYLUOI = '" + str_ma_dviqly_luoi + "'");
                        chkChildNode = new CheckBox();
                        chkChildNode.Content = str_ma_tngan;
                        chkChildNode.Tag = ma_tngan + "@" + chkNode.ToolTip.ToString() + "@NUTCON";
                        chkChildNode.ToolTip = str_ma_tngan;
                        chkChildNode.IsChecked = false;
                        chkChildNode.Click += new RoutedEventHandler(this.CheckBox_Click);
                        _childnode = new TreeViewItem();
                        _childnode.Header = chkChildNode; //+ " (" + str_soluong + " hồ sơ)";
                        _childnode.IsExpanded = true;
                        _node.Items.Add(_childnode); //them nut con
                        strnutcon = str_ma_tngan;
                    }
                    #endregion
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return;
            }
        }
        private void fill_dulieu_DL(DataSet ds)// hàm này đưa dữ liệu từ đầu vào tree();
        {
            try
            {
                if (ds.Tables.Count == 0) return;
                TreeViewItem superNode = new TreeViewItem();
                TreeViewItem _node = new TreeViewItem();
                TreeViewItem _childnode = new TreeViewItem();
                CheckBox chkNode = new CheckBox();
                CheckBox chkChildNode = new CheckBox();
                CheckBox chkSuperNode = new CheckBox();
                DataSet dsdv = dsD_DVI_QLY.Copy();
                // filter_treeDataSet();
                this.trvBBAN.Items.Clear(); // xoa tree trước khi đỗ dữ liệu mới
                DataView dv = new DataView(ds.Tables[0]);
                dv.Sort = "MA_DVIQLY,MA_TNGAN";
                if (dv.Count == 0) // không có dữ liệu không đưa ra tree
                {

                    superNode.Header = "Không có dữ liệu biên bản";
                    superNode.Tag = "Không có dữ liệu biên bản@";
                    trvBBAN.Items.Add(superNode);
                    return;
                }
                dsdv.Tables[0].DefaultView.RowFilter = "MA_DVIQLY ='" + ma_dv + "'";
                chkSuperNode = new CheckBox();
                chkSuperNode.Content = ma_dv + " _*_ " + dsdv.Tables[0].DefaultView[0]["TEN_DVIQLY"].ToString();
                chkSuperNode.Tag = "@N@NUTGOC";
                chkSuperNode.ToolTip = ma_dv;
                chkSuperNode.IsChecked = false;
                chkSuperNode.Click += new RoutedEventHandler(this.CheckBox_Click);
                superNode = new TreeViewItem();
                superNode.Header = chkSuperNode;
                superNode.IsExpanded = true;
                //superNode.IsSelected = true;
                trvBBAN.Items.Add(superNode);
                string strnutcha = "";
                string strnutcon = "";
                string str_ma_dviqly = "";
                string str_ma_tngan = "";
                string ma_tngan = "";
                foreach (DataRowView dr in dv)
                {
                    //str_ma_dviqly = dr["MA_DVIQLY"].ToString();
                    str_ma_tngan = dr["SEARCH"].ToString();
                    ma_tngan = dr["MA_TNGAN"].ToString();
                    #region "parentnode"
                    if (str_ma_tngan != strnutcha)
                    {
                        chkNode = new CheckBox();
                        //dsdv.Tables[0].DefaultView.RowFilter = "MA_DVIQLY ='" + str_ma_dviqly + "'";
                        chkNode.Content = str_ma_tngan;
                        chkNode.Tag = ma_tngan + "@" + chkSuperNode.ToolTip.ToString() + "@NUTCHA";
                        chkNode.ToolTip = str_ma_tngan;
                        chkNode.IsChecked = false;
                        chkNode.Click += new RoutedEventHandler(this.CheckBox_Click);
                        _node = new TreeViewItem();
                        _node.Header = chkNode;
                        _node.IsExpanded = true;
                        superNode.Items.Add(_node);
                        strnutcha = str_ma_tngan;
                    }
                    # endregion
                    /*#region childNode
                    if (str_ma_tngan != strnutcon)
                    {
                        //DataRow[] row1 = dsResultTree.Tables["table1"].Select("MA_DVI_QLYLUOI = '" + str_ma_dviqly_luoi + "'");
                        chkChildNode = new CheckBox();
                        chkChildNode.Content = str_ma_tngan;
                        chkChildNode.Tag = str_ma_tngan + "@" + chkNode.ToolTip.ToString() + "@NUTCON";
                        chkChildNode.ToolTip = str_ma_tngan;
                        chkChildNode.IsChecked = false;
                        chkChildNode.Click += new RoutedEventHandler(this.CheckBox_Click);
                        _childnode = new TreeViewItem();
                        _childnode.Header = chkChildNode; //+ " (" + str_soluong + " hồ sơ)";
                        _childnode.IsExpanded = true;
                        _node.Items.Add(_childnode); //them nut con
                        strnutcon = str_ma_tngan;
                    }
                    #endregion
                     */
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return;
            }
        }
        public void CheckBox_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                CheckBox chk = (CheckBox)sender;
                if (dtptungay.Text == string.Empty || dtpdenngay.Text == string.Empty)
                {
                    TootsNPC.ShowMessage.SetStatus("ERROR", this, cmdTongHop, "lblstatus", "Hãy chọn ngày lấy dữ liệu!");
                    chk.IsChecked = false;
                    dtptungay.Focus();
                    return;
                }
                this.Cursor = Cursors.Wait;
                chk.Cursor = Cursors.Wait;
                lblstatus.Content = "Đang lấy dữ liệu...";
                TreeViewItem itemselect = trvBBAN.SelectedItem as TreeViewItem;
                string soBBanPbo = "", ngayPbo = "";
                //get_chkItem(chk, ref soBBanPbo, ref ngayPbo);
                //dt = new DataTable();
                //dt = this.dsResult.Tables["CTO"].Clone();
                // cắt mảng tag
                string[] m = chk.Tag.ToString().Split('@');
                dsResult = new DataSet();
                if (chk.IsChecked == true)
                {
                    TootsNPC.NPCTreeView.TreeViewCheckList(trvBBAN, chk);
                    if(ma_dv.Length < 6) // công ty
                    {
                        // nếu clicj nut goc
                        if (chk.Tag.ToString() == "@N@NUTGOC")
                        {
                           // dsResult = cls.get_INBAOCAOTONGHOPDONVI(ma_dv, "DONVIQUANLY", DSACH, dtptungay.SelectedDate.Value.Date, dtpdenngay.SelectedDate.Value.Date, ref maloi);
                            dsResult = GlobalServices.Service_NPCUS.get_INBAOCAOTONGHOPDONVI(ma_dv, "DONVIQUANLY", DSACH, dtptungay.SelectedDate.Value.Date, dtpdenngay.SelectedDate.Value.Date, ref maloi);
                            ds_INBAOCAO.Tables["BAOCAO"].Rows.Clear();
                            TootsNPC.NPCDatasetTable.AddTable(dsResult.Tables[0], ds_INBAOCAO.Tables["BAOCAO"]);
                        }
                        // nếu clich nút cha
                        if (m[2].ToString() == "NUTCHA")
                        {
                            //dsResult = cls.get_INBAOCAOTONGHOPDONVI(m[0].ToString(), "DONVIQUANLY", i16ThangHT, i16NamHT, DSACH, ref maloi);
                            dsResult = GlobalServices.Service_NPCUS.get_INBAOCAOTONGHOPDONVI(m[0].ToString(), "DONVIQUANLY", DSACH, dtptungay.SelectedDate.Value.Date, dtpdenngay.SelectedDate.Value.Date, ref maloi);
                            TootsNPC.NPCDatasetTable.AddTable(dsResult.Tables[0], ds_INBAOCAO.Tables["BAOCAO"]);
                        }
                        // nếu clicj nút con
                        if (m[2].ToString() == "NUTCON")
                        {
                            //dsResult = cls.get_INBAOCAOTONGHOPDONVI(m[1].ToString(),m[0].ToString(), i16ThangHT, i16NamHT, DSACH, ref maloi);
                            dsResult = GlobalServices.Service_NPCUS.get_INBAOCAOTONGHOPDONVI(m[1].ToString(), m[0].ToString(), DSACH, dtptungay.SelectedDate.Value.Date, dtpdenngay.SelectedDate.Value.Date, ref maloi);
                            TootsNPC.NPCDatasetTable.AddTable(dsResult.Tables[0], ds_INBAOCAO.Tables["BAOCAO"]);
                        }
                    }
                    if(ma_dv.Length == 6) // công ty
                    {
                        // nếu clicj nut goc
                        if (chk.Tag.ToString() == "@N@NUTGOC")
                        {
                            //dsResult = cls.get_INBAOCAOTONGHOPDONVI(ma_dv,"DONVIQUANLY", i16ThangHT, i16NamHT, DSACH, ref maloi);
                            dsResult = GlobalServices.Service_NPCUS.get_INBAOCAOTONGHOPDONVI(ma_dv, "DONVIQUANLY", DSACH, dtptungay.SelectedDate.Value.Date, dtpdenngay.SelectedDate.Value.Date, ref maloi);
                            ds_INBAOCAO.Tables["BAOCAO"].Rows.Clear();
                            TootsNPC.NPCDatasetTable.AddTable(dsResult.Tables[0], ds_INBAOCAO.Tables["BAOCAO"]);
                        }
                        // nếu clich nút cha
                        if (m[2].ToString() == "NUTCHA")
                        {
                            //dsResult = cls.get_INBAOCAOTONGHOPDONVI(ma_dv,m[0].ToString(), i16ThangHT, i16NamHT, DSACH, ref maloi);
                            dsResult = GlobalServices.Service_NPCUS.get_INBAOCAOTONGHOPDONVI(ma_dv, m[0].ToString(), DSACH, dtptungay.SelectedDate.Value.Date, dtpdenngay.SelectedDate.Value.Date, ref maloi);
                            TootsNPC.NPCDatasetTable.AddTable(dsResult.Tables[0], ds_INBAOCAO.Tables["BAOCAO"]);
                        }
                    }
                    
                }
                else
                {
                    TootsNPC.NPCTreeView.TreeViewUnCheckList(trvBBAN, chk);
                    if (ma_dv.Length < 6) // công ty
                    {
                        // nếu clicj nut goc
                        if (chk.Tag.ToString() == "@N@NUTGOC")
                        {
                            ds_INBAOCAO.Tables["BAOCAO"].Rows.Clear();
                        }
                        // nếu clich nút cha
                        if (m[2].ToString() == "NUTCHA")
                        {
                            for (int i = ds_INBAOCAO.Tables["BAOCAO"].Rows.Count - 1; i >= 0; i--)
                            {
                                if (ds_INBAOCAO.Tables["BAOCAO"].Rows[i]["MA_DVIQLY"].ToString().Trim() == m[0].ToString().Trim())
                                {
                                    ds_INBAOCAO.Tables["BAOCAO"].Rows[i].Delete();
                                }
                            } //end of for loop     

                            ds_INBAOCAO.AcceptChanges();
                        }
                        // nếu clicj nút con
                        if (m[2].ToString() == "NUTCON")
                        {
                            for (int i = ds_INBAOCAO.Tables["BAOCAO"].Rows.Count - 1; i >= 0; i--)
                            {
                                if (ds_INBAOCAO.Tables["BAOCAO"].Rows[i]["MA_DVIQLY"].ToString().Trim() == m[1].ToString().Trim() && ds_INBAOCAO.Tables["BAOCAO"].Rows[i]["MA_TNGAN"].ToString().Trim() == m[0].ToString().Trim())
                                {
                                    ds_INBAOCAO.Tables["BAOCAO"].Rows[i].Delete();
                                }
                            } //end of for loop     
                            ds_INBAOCAO.AcceptChanges();
                        }
                    }
                    if (ma_dv.Length == 6) // công ty
                    {
                        // nếu clicj nut goc
                        if (chk.Tag.ToString() == "@N@NUTGOC")
                        {
                            ds_INBAOCAO.Tables["BAOCAO"].Rows.Clear();
                        }
                        // nếu clich nút cha
                        if (m[2].ToString() == "NUTCHA")
                        {
                            for (int i = ds_INBAOCAO.Tables["BAOCAO"].Rows.Count - 1; i >= 0; i--)
                            {
                                if (ds_INBAOCAO.Tables["BAOCAO"].Rows[i]["MA_DVIQLY"].ToString().Trim() == m[1].ToString().Trim() && ds_INBAOCAO.Tables["BAOCAO"].Rows[i]["MA_TNGAN"].ToString().Trim() == m[0].ToString().Trim())
                                {
                                    ds_INBAOCAO.Tables["BAOCAO"].Rows[i].Delete();
                                }
                            } //end of for loop     
                            ds_INBAOCAO.AcceptChanges();
                        }
                    }
                }
                
                lblstatus.Content = "";
                chk.Cursor = null;
                this.Cursor = null;
                //
            }
            catch
            {
                CheckBox chk = (CheckBox)sender;
                this.Cursor = null;
                this.Cursor = null;
                MessageBox.Show(maloi,"Lỗi",MessageBoxButton.OK,MessageBoxImage.Error);
            }
        }

        private void cmdTongHop_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                DataSet dsdv = dsD_DVI_QLY.Copy();
                if (ma_dv == "")
                { 
                    TootsNPC.ShowMessage.SetStatus("ERROR", this, cmdTongHop, "lblstatus", "Hãy chọn đơn vị để tổng hợp!");
                    return;
                }
                
                if (ma_dv.Length == 6)
                {
                    // tổng hợp 1 đơn vị
                    dsdv.Tables[0].DefaultView.RowFilter = "MA_DVIQLY ='" + ma_dv + "'";
                    TootsNPC.ShowMessage.SetStatus("WARNING", this, cmdTongHop, "lblstatus", "Đang tổng hợp số liệu đơn vị: " +  dsdv.Tables[0].DefaultView[0]["TEN_DVIQLY"].ToString() + "!");
                    //cls.TONGHOPBAOTOANDONVI(ma_dv, i16ThangHT, i16NamHT, ref maloi);
                    GlobalServices.Service_NPCUS.TONGHOPBAOTOANDONVI(ma_dv, i16ThangHT, i16NamHT, ref maloi);
                    if (maloi != "true")
                    {
                        TootsNPC.ShowMessage.SetStatus("ERROR", this, cmdTongHop, "lblstatus", maloi);
                    }
                }
                else
                {
                    // tổng hợp tất cả đơn vị
                    for (int i = 0; i < dsdv.Tables[0].Rows.Count; i++)
                    {
                        if (dsdv.Tables[0].Rows[i]["MA_DVIQLY"].ToString().Length == 6)
                        {
                            TootsNPC.ShowMessage.SetStatus("WARNING", this, cmdTongHop, "lblstatus", "Đang tổng hợp số liệu đơn vị: " + dsdv.Tables[0].Rows[i]["TEN_DVIQLY"].ToString() + "!");
                            //cls.TONGHOPBAOTOANDONVI(ma_dv, i16ThangHT, i16NamHT, ref maloi);
                            GlobalServices.Service_NPCUS.TONGHOPBAOTOANDONVI(ma_dv, i16ThangHT, i16NamHT, ref maloi);
                            if (maloi != "true")
                            {
                                TootsNPC.ShowMessage.SetStatus("ERROR", this, cmdTongHop, "lblstatus", maloi);
                            }
                        }
                    }
                }
                TootsNPC.ShowMessage.SetStatus("SUCCESS", this, cmdTongHop, "lblstatus", "Tổng hợp xong số liệu!");
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Lỗi", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void dtptungay_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            { TootsNPC.NPCTreeView.UnCheckTreeView(trvBBAN); }
            catch
            { }
        }

        private void dtpdenngay_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            { TootsNPC.NPCTreeView.UnCheckTreeView(trvBBAN); }
            catch
            { }
        }
        
    }
}
